package site.yunnong.atvris.service;

import site.yunnong.atvris.common.dto.InteractionParam;

import java.util.Set;

/**
 * 点击、播放、点赞、收藏、关注相关
 * @author zjh
 * @date 2021/9/9 10:43
 */
public interface InteractionService {
    
    void click(InteractionParam param);

    void like(InteractionParam param);

    void view(InteractionParam param);

    /**
     * 查找用户对媒体的点赞状态
     * @param uuid
     * @param mediaType
     * @param mediaId
     * @return
     */
    boolean findMediaLikeStatus(Long uuid, Integer mediaType, Long mediaId);

    /**
     * 收藏
     * @param param
     *
     */
    void star(InteractionParam param);

    int findMediaLikedCount(Integer mediaType, Long mediaId);

    int findMediaViewCount(Integer mediaType, Long mediaId);

    void follow(Long uuid);
    
    void unfollow(Long uuid);

    boolean hasFollowed(Long loginUuid, Long uuid);

    Set<Long> findUserFollowList(Long uuid, Integer pageNum, Integer pageSize);

    long findUserFansCount(Long uuid);

    long findUserFollowCount(Long uuid);

    int findMediaClickCount(Integer mediaType, Long mediaId);

    int findUserLikedCount(Long uuid);

    int findUserViewCount(Long uuid);

    /**
     * 曝光量统计
     * @param param
     */
    void exposure(InteractionParam param);

    int findMediaExposureCount(Integer mediaType, Long mediaId);
}
